<<<<<<< HEAD
/**
  ******************************************************************************
  * @file    lcd.h
  * @author  FZetc飞贼(方惠清) 
  * @version V1.0.2
  * @date    2024.8
  * @brief   1、显示颜色(任意颜色、位置、大小显示)
  *          2、显示bmp图片(任意bmp图片、位置、大小显示)
  *          
  ******************************************************************************
  * @attention
  *  注意：
  *     本文档只供学习使用，不得商用，违者必究
  *	 推广：
  *  	合作交流建议：FZetcSnitch@163.com
  *		网站建设推广：www.FZetc.com
  *  	微信公众号：  FZetc飞贼 
  *
  ******************************************************************************
  */
#ifndef __LCD_H        // 定义以防止递归包含
#define __LCD_H


// (1)、其它头文件
#include <stdio.h>
#include <sys/types.h>  // open函数
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>     // write函数、close函数
#include <sys/mman.h>   // mmap函数、unmap函数
#include <errno.h>      // 全局错误码声明所在的头文件
#include <string.h>     // strerror函数          
#include <stdlib.h>     // bzero函数、free函数
#include "my_config.h"  // 自定义配置文件
#include "font.h"       // 字库的头文件


// (2)、宏定义(函数、变量、常量)
#define LCD_DEVPATH "/dev/fb0"    // 开发板lcd文件位置

#define RED_COLOR    0x00ff0000   // 颜色
#define GREEN_COLOR  0x0000ff00
#define BLUE_COLOR   0x000000ff
#define WHITE_COLOR  0x00ffffff
#define BLACK_COLOR  0x00000000

#define NONE_FORMAT  0x00         // 图片格式
#define BMP_FORMAT   0x01 
#define JPG_FORMAT   0x02 
#define PNG_FORMAT   0x03 


// (3)、自定义类型(结构体、联合体、枚举)			
// 1、lcd结构体类型
typedef struct lcd_msg
{
    s32 fd;        // lcd显示屏的文件描述符
    u32 *p;        // lcd显示屏映射函数返回的虚拟内存的指针
    u32 *tmp_p;    // lcd显示屏映射函数返回的虚拟内存的指针的备份
    
}lcd_msg, *lcd_msg_p;


// bmp图片的54个字节的头信息结构体
struct bitmap_header
{
    s16 type;       
    s32 size;               // 图像文件大小
    s16 reserved1;
    s16 reserved2;
    s32 offbits;            // bmp图像数据偏移量

}__attribute__((packed));   // 打包压缩

struct bitmap_info
{
    s32 size;               // 本结构大小    
    s32 width;              // 图像宽
    s32 height;             // 图像高
    s16 planes;

    s16 bit_count;          // 色深
    s32 compression;
    s32 size_img;           // bmp数据大小，必须是4的整数倍
    s32 X_pel;
    s32 Y_pel;
    s32 clrused;
    s32 clrImportant;

}__attribute__((packed));

// 2、图片结构体类型
typedef struct pic_msg
{
    s32 fd;                         // 图片的文件描述符
    u8  format;                     // 图片的格式
    u8  *bmp_buf;                   // 图片的颜色数据
    u32 *tmp_buf;                   // 显示屏的图片颜色数据
    u32 *lcd_buf;

    struct bitmap_header header;    // bmp图片的头信息结构体
    struct bitmap_info   info;   
    
}pic_msg, *pic_msg_p;


// (4)、函数声明
extern lcd_msg_p LCD_Init(const s8 *dev_pathname);
extern void LCD_UnInit(lcd_msg_p lcd_p);
extern void LCD_ShowColor(lcd_msg_p lcd_p, u32 color, u16 color_w, u16 color_h, u16 lcd_x, u16 lcd_y);
extern pic_msg_p PIC_Init(u8 pic_fomat);
extern void PIC_UnInit(pic_msg_p pic_p);
extern void LCD_ShowPicture(lcd_msg_p lcd_p, pic_msg_p pic_p,  const u8* pic_path, u16 lcd_x, u16 lcd_y, u8 show_effect);
extern void LCD_ShowColorFont(lcd_msg_p lcd, int f_s, int bm_w, int bm_h, color bm_c, int f_x, int f_y, char *font_text, color f_c, int f_lw, int lcd_x, int lcd_y);
extern void LCD_ShowPicFont(lcd_msg_p lcd, int f_s, char *bmp_path, int f_x, int f_y, char *font_text, color f_c, int f_lw, int lcd_x, int lcd_y);

// (5)、全局变量(声明)

// (6)、static全局变量(定义)

// (7)、static全局函数(实现)


#endif




=======
/**
  ******************************************************************************
  * @file    lcd.h
  * @author  FZetc飞贼(方惠清) 
  * @version V1.0.2
  * @date    2024.8
  * @brief   1、显示颜色(任意颜色、位置、大小显示)
  *          2、显示bmp图片(任意bmp图片、位置、大小显示)
  *          
  ******************************************************************************
  * @attention
  *  注意：
  *     本文档只供学习使用，不得商用，违者必究
  *	 推广：
  *  	合作交流建议：FZetcSnitch@163.com
  *		网站建设推广：www.FZetc.com
  *  	微信公众号：  FZetc飞贼 
  *
  ******************************************************************************
  */
#ifndef __LCD_H        // 定义以防止递归包含
#define __LCD_H


// (1)、其它头文件
#include <stdio.h>
#include <sys/types.h>  // open函数
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>     // write函数、close函数
#include <sys/mman.h>   // mmap函数、unmap函数
#include <errno.h>      // 全局错误码声明所在的头文件
#include <string.h>     // strerror函数          
#include <stdlib.h>     // bzero函数、free函数
#include "my_config.h"  // 自定义配置文件
#include "font.h"       // 字库的头文件


// (2)、宏定义(函数、变量、常量)
#define LCD_DEVPATH "/dev/fb0"    // 开发板lcd文件位置

#define RED_COLOR    0x00ff0000   // 颜色
#define GREEN_COLOR  0x0000ff00
#define BLUE_COLOR   0x000000ff
#define WHITE_COLOR  0x00ffffff
#define BLACK_COLOR  0x00000000

#define NONE_FORMAT  0x00         // 图片格式
#define BMP_FORMAT   0x01 
#define JPG_FORMAT   0x02 
#define PNG_FORMAT   0x03 


// (3)、自定义类型(结构体、联合体、枚举)			
// 1、lcd结构体类型
typedef struct lcd_msg
{
    s32 fd;        // lcd显示屏的文件描述符
    u32 *p;        // lcd显示屏映射函数返回的虚拟内存的指针
    u32 *tmp_p;    // lcd显示屏映射函数返回的虚拟内存的指针的备份
    
}lcd_msg, *lcd_msg_p;


// bmp图片的54个字节的头信息结构体
struct bitmap_header
{
    s16 type;       
    s32 size;               // 图像文件大小
    s16 reserved1;
    s16 reserved2;
    s32 offbits;            // bmp图像数据偏移量

}__attribute__((packed));   // 打包压缩

struct bitmap_info
{
    s32 size;               // 本结构大小    
    s32 width;              // 图像宽
    s32 height;             // 图像高
    s16 planes;

    s16 bit_count;          // 色深
    s32 compression;
    s32 size_img;           // bmp数据大小，必须是4的整数倍
    s32 X_pel;
    s32 Y_pel;
    s32 clrused;
    s32 clrImportant;

}__attribute__((packed));

// 2、图片结构体类型
typedef struct pic_msg
{
    s32 fd;                         // 图片的文件描述符
    u8  format;                     // 图片的格式
    u8  *bmp_buf;                   // 图片的颜色数据
    u32 *tmp_buf;                   // 显示屏的图片颜色数据
    u32 *lcd_buf;

    struct bitmap_header header;    // bmp图片的头信息结构体
    struct bitmap_info   info;   
    
}pic_msg, *pic_msg_p;


// (4)、函数声明
extern lcd_msg_p LCD_Init(const s8 *dev_pathname);
extern void LCD_UnInit(lcd_msg_p lcd_p);
extern void LCD_ShowColor(lcd_msg_p lcd_p, u32 color, u16 color_w, u16 color_h, u16 lcd_x, u16 lcd_y);
extern pic_msg_p PIC_Init(u8 pic_fomat);
extern void PIC_UnInit(pic_msg_p pic_p);
extern void LCD_ShowPicture(lcd_msg_p lcd_p, pic_msg_p pic_p,  const u8* pic_path, u16 lcd_x, u16 lcd_y, u8 show_effect);
extern void LCD_ShowColorFont(lcd_msg_p lcd, int f_s, int bm_w, int bm_h, color bm_c, int f_x, int f_y, char *font_text, color f_c, int f_lw, int lcd_x, int lcd_y);
extern void LCD_ShowPicFont(lcd_msg_p lcd, int f_s, char *bmp_path, int f_x, int f_y, char *font_text, color f_c, int f_lw, int lcd_x, int lcd_y);

// (5)、全局变量(声明)

// (6)、static全局变量(定义)

// (7)、static全局函数(实现)


#endif




>>>>>>> gec
